import { ElNotification } from 'element-plus'
// import Zip from 'jszip';
import { saveAs } from 'file-saver';
import axios from 'axios';

/**
 * @description 接收数据流生成blob，创建链接，下载文件
 * @param {Function} api 导出表格的api方法(必传)
 * @param {String} tempName 导出的文件名(必传)
 * @param {Object} params 导出的参数(默认为空对象)
 * @param {Boolean} isNotify 是否有导出消息提示(默认为 true)
 * @param {String} fileType 导出的文件格式(默认为.xlsx)
 * @return void
 * */
export const downloadFile = async (
  api,
  tempName,
  // params,
  // isNotify = true,
  fileType = '.xlsx'
) => {
  // if (isNotify) {
  //   ElNotification({
  //     title: '温馨提示',
  //     message: '如果数据庞大会导致下载缓慢哦，请您耐心等待！',
  //     type: 'info',
  //     duration: 3000
  //   })
  // }
  try {
    // const res = await api(params)
    // const blob = new Blob([res], {
    // 	type: "application/vnd.ms-excel;charset=UTF-8"
    // });
    // const blob = new Blob([api])
    // 兼容 edge 不支持 createObjectURL 方法
    // 请求接口文件blob
    // if ('msSaveOrOpenBlob' in navigator)
    //   return window.navigator.msSaveOrOpenBlob(blob, tempName + fileType)
    // const blobUrl = window.URL.createObjectURL(blob)
    const blobUrl = api
    const exportFile = document.createElement('a')
    exportFile.style.display = 'none'
    exportFile.href = blobUrl
    exportFile.download = `${tempName}${fileType}`
    document.body.appendChild(exportFile)
    exportFile.click()
    // 去除下载对 url 的影响
    document.body.removeChild(exportFile)
    window.URL.revokeObjectURL(blobUrl)
  } catch (error) {
    throw Error(Error)
  }
}


// 仅支持视频下载和图片下载
export const downLoadImage = async (imageUrl) => {
  try {
    const blobUrl = `${imageUrl}?response-content-type=application/octet-stream`
    const fileName = 'downloaded-image.jpg'; // 下载后的文件名
    const exportFile = document.createElement('a')
    exportFile.style.display = 'none'
    exportFile.href = blobUrl
    exportFile.download = fileName
    exportFile.setAttribute('download', fileName);
    document.body.appendChild(exportFile)
    exportFile.click()
    document.body.removeChild(exportFile)
    window.URL.revokeObjectURL(blobUrl)
  } catch (error) {
    throw Error(Error)
  }
}